#pragma once


namespace Be
{
	class HierachyComponent
		: public Component
	{
	public:
		HierachyComponent(Entity* p_pEntity);
		virtual ~HierachyComponent();

	public:
		void SetParent(ComPtr<HierachyComponent> l_pParent);
		ComPtr<HierachyComponent> GetParent();

		void AddChild(ComPtr<HierachyComponent> p_pChild);
		void RemoveChild(ComPtr<HierachyComponent> p_pChild);
		std::set<ComPtr<HierachyComponent>>& GetChildSet();

	private:
		ComPtr<HierachyComponent> m_pParent;
		std::set<ComPtr<HierachyComponent>> m_pChildSet;
	};
}
